/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package entity;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

/**
 * Classe Entity che rappresenta l'utente nel database
 * @author giosk
 */
@Entity
public class Utenti implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private String login;
    private String pwd;
    private String nome;
    private String cognome;
    private String mail;
    private double conto = 50000.00;

    /**
     * Restituisce la quantità di denaro che un utente possiede
     * @return la quantità di denaro che l'utente possiede correntemente
     */
    public double getConto() {
        return conto;
    }

    /**
     * Imposta la quantità di denaro che un utente possiede
     * @param conto la nuova quantità di denaro che l'utente possiederà
     */
    public void setConto(double conto) {
        this.conto = conto;
    }

    /**
     * Restituisce il cognome di un utente
     * @return il cognome di un utente
     */
    public String getCognome() {
        return cognome;
    }

    /**
     * Imposta il cognome di un utente
     * @param cognome il nuovo cognome dell'utente
     */
    public void setCognome(String cognome) {
        this.cognome = cognome;
    }

    /**
     * Restituisce il login dell'utente
     * @return il login dell'utente
     */
    public String getLogin() {
        return login;
    }

    /**
     * Imposta la login dell'utente
     * @param login la nuova login dell'utente, univoco per ogni utente
     */
    public void setLogin(String login) {
        this.login = login;
    }

    /**
     * Restituisce l'email dell'utente
     * @return l'email dell'utente
     */
    public String getMail() {
        return mail;
    }

    /**
     * Imposta la nuova email dell'utente
     * @param mail la nuova mail dell'utente
     */
    public void setMail(String mail) {
        this.mail = mail;
    }

    /**
     * Restituisce il nome dell'utente
     * @return il nome dell'utente
     */
    public String getNome() {
        return nome;
    }

    /**
     * Imposta il nuovo nome dell'Utente
     * @param nome il nuovo nome dell'utente
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * Restituisce la password dell'utente
     * @return la password corrente dell'utente
     */
    public String getPwd() {
        return pwd;
    }

    /**
     * Imposta la password dell'utente
     * @param pwd la nuova password dell'utente
     */
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    /**
     * Restituisce l'ID dell'utente
     * @return l' id dell'utente
     */
    public Long getId() {
        return id;
    }

    /**
     * Imposta l'ID dell'utente
     * @param id il nuovo ID dell'utente, univoco per ogni utente
     */
    public void setId(Long id) {
        this.id = id;
    }

    /**
     * Restituisce un Hashcode per questa istanza
     * @return l'hash code di questa istanza
     */
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    /**
     * Controlla che l'object sia per prima cosa un istanza della classe Utenti
     * successivamente confronta gli ID e restituisce true se sono uguali, false altrimenti
     * @param object L'oggetto che deve essere confrontato
     * @return true se gli ID sono identici, false altrimenti
     */
    @Override
    public boolean equals(Object object) {
        if (!(object instanceof Utenti)) {
            return false;
        }
        Utenti other = (Utenti) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    /**
     * Restituisce una stringa in formato leggibile con l'id dell'istanza Utente
     * @return stringa formattata entity.Utenti[id=" + id + "]
     */
    @Override
    public String toString() {
        return "entity.Utenti[id=" + id + "]";
    }

}
